home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / blankery / mblank / forces.blm.asm < prev    next >
Assembly Source File  |  1982-08-01  |  8KB  |  397 lines

  1.     ttl 'Save blanker module'
  2.  
  3.          incdir    "Includes:"
  4.         include    "exec/funcdef.i"
  5.         include "exec/memory.i"
  6.         include    "dos/dosextens.i"
  7.         include "dos/dos_lib.i"
  8.         include    "exec/exec_lib.i"
  9.         include "intuition/intuition.i"
  10.         include "intuition/intuition_lib.i"
  11.         include "graphics/displayinfo.i"
  12.         include "graphics/gfx.i"
  13.         include "graphics/graphics_lib.i"
  14.         include "graphics/scale.i"
  15.         include    "libraries/commodities.i"
  16.         include "libraries/gadtools.i"
  17.         include    "workbench/startup.i"
  18.         include    "workbench/workbench.i"
  19.  
  20.         include "//MB_Develop/module.i"
  21.  
  22.         bra    DataSave
  23.  
  24. module_name    dc.b "//MB_Modules/Forces.blm",0
  25.  
  26.         cnop 0,4
  27. blm_start    dcb.b    blm_SIZEOF,0
  28.  
  29. ;all pointers are relatives to blm_start
  30. settings    EQU    *-blm_start
  31.  
  32.         dc.l    CHECKBOX_KIND
  33. maskcheck    ;MASK
  34.         dc.l    NULL
  35.         dc.l    TRUE
  36.         dc.l    NULL
  37.  
  38.         dc.l    LINK_KIND
  39.         dc.l    CHECKBOX_KIND
  40. dbufcheck    ;DBLBUF
  41.         dc.l    NULL
  42.         dc.l    TRUE
  43.         dc.l    NULL
  44.  
  45.         dc.l    CYCLE_KIND
  46. modecycle    ;MODE
  47.         dc.l    NULL
  48.         dc.l    0
  49.         dc.l    5
  50.         dc.l    NULL
  51.         dc.l    NULL
  52.         dc.l    NULL
  53.         dc.l    NULL
  54.         dc.l    NULL
  55.         dc.l    NULL
  56.         dc.l    NULL
  57.  
  58.         dc.l    LINK_KIND
  59.         dc.l    CYCLE_KIND
  60. mascycle    ;MASSES
  61.         dc.l    NULL
  62.         dc.l    0
  63.         dc.l    3
  64.         dc.l    NULL
  65.         dc.l    NULL
  66.         dc.l    NULL
  67.         dc.l    NULL
  68.         dc.l    NULL
  69.  
  70.         dc.l    SLIDER_KIND
  71. sdslider    ;SCREENDEPTH
  72.         dc.l    NULL
  73.         dc.l    4
  74.         dc.l    1
  75.         dc.l    4
  76.         dc.l    NULL
  77.  
  78.         dc.l    LINK_KIND
  79.         dc.l    SLIDER_KIND
  80. objslider    ;OBJECTS
  81.         dc.l    NULL
  82.         dc.l    7
  83.         dc.l    2
  84.         dc.l    100
  85.         dc.l    NULL
  86.  
  87.         dc.l    SLIDER_KIND
  88. mfslider    ;M_FORCE
  89.         dc.l    NULL
  90.         dc.l    300
  91.         dc.l    50
  92.         dc.l    2000
  93.         dc.l    NULL
  94.  
  95.         dc.l    LINK_KIND
  96.         dc.l    SLIDER_KIND
  97. gfslider    ;G_FORCE
  98.         dc.l    NULL
  99.         dc.l    200
  100.         dc.l    50
  101.         dc.l    2000
  102.         dc.l    NULL
  103.  
  104.         dc.l    CYCLE_KIND
  105. mdircycle    ;M_DIRECTION
  106.         dc.l    NULL
  107.         dc.l    0
  108.         dc.l    3
  109.         dc.l    NULL
  110.         dc.l    NULL
  111.         dc.l    NULL
  112.         dc.l    NULL
  113.         dc.l    NULL
  114.  
  115.         dc.l    LINK_KIND
  116.         dc.l    CYCLE_KIND
  117. gscycle        ;G_SOURCE
  118.         dc.l    NULL
  119.         dc.l    0
  120.         dc.l    4
  121.         dc.l    NULL
  122.         dc.l    NULL
  123.         dc.l    NULL
  124.         dc.l    NULL
  125.         dc.l    NULL
  126.         dc.l    NULL
  127.  
  128.         dc.l    SLIDER_KIND
  129. mrslider    ;M_RADIUS
  130.         dc.l    NULL
  131.         dc.l    800
  132.         dc.l    2
  133.         dc.l    2000
  134.         dc.l    NULL
  135.  
  136.         dc.l    LINK_KIND
  137.         dc.l    SLIDER_KIND
  138. nsslider    ;NOVA_SPEED
  139.         dc.l    NULL
  140.         dc.l    10
  141.         dc.l    1
  142.         dc.l    30
  143.         dc.l    NULL
  144.                 
  145.         dc.l    SLIDER_KIND
  146. afslider    ;AIR_FRICTION
  147.         dc.l    NULL
  148.         dc.l    5
  149.         dc.l    1
  150.         dc.l    1000
  151.         dc.l    NULL
  152.  
  153.         dc.l    LINK_KIND
  154.         dc.l    SLIDER_KIND
  155. wfslider    ;WALL_FRICTION
  156.         dc.l    NULL
  157.         dc.l    150
  158.         dc.l    1
  159.         dc.l    1000
  160.         dc.l    NULL
  161.  
  162. ;other structures follow first, then string-data
  163.         dc.l    -1    ;end of settings flag
  164.  
  165. maskttname    EQU    *-blm_start
  166.         dc.b    'MASK',0,0,0,0,0,0
  167. maskgtext    EQU    *-blm_start
  168.         dc.b    'Use RenderMask',NULL
  169. dbufttname    EQU    *-blm_start
  170.         dc.b    'DBLBUF',0,0,0,0,0,0
  171. dbufgtext    EQU    *-blm_start
  172.         dc.b    'DblBuf. Screen',NULL
  173.  
  174. modettname    EQU    *-blm_start
  175.         dc.b    'MODE',0,0,0,0,0,0,0,0,0,0,0,0,0
  176. modegtext    EQU    *-blm_start
  177.         dc.b    'Play Mode',NULL
  178. modeitem1    EQU    *-blm_start
  179.         dc.b    'AUTO',NULL
  180. modeitem2    EQU    *-blm_start
  181.         dc.b    'MAGNETIC',NULL
  182. modeitem3    EQU    *-blm_start
  183.         dc.b    'GRAVITY',NULL
  184. modeitem4    EQU    *-blm_start
  185.         dc.b    'MAGRAV',NULL
  186. modeitem5    EQU    *-blm_start
  187.         dc.b    'PLAIN',NULL
  188.  
  189. masttname    EQU    *-blm_start
  190.         dc.b    'MASSES',0,0,0,0,0,0,0,0,0,0,0
  191. masgtext    EQU    *-blm_start
  192.         dc.b    'Obj. Masses',NULL
  193. masitem1    EQU    *-blm_start
  194.         dc.b    'RANDOM',NULL
  195. masitem2    EQU    *-blm_start
  196.         dc.b    'ORDER',NULL
  197. masitem3    EQU    *-blm_start
  198.         dc.b    'EQUAL',NULL
  199.  
  200. gsttname    EQU    *-blm_start
  201.         dc.b    'G_SOURCE',0,0,0,0,0,0,0,0,0,0
  202. gsgtext        EQU    *-blm_start
  203.         dc.b    'Grav. Src.',NULL
  204. gsitem1        EQU    *-blm_start
  205.         dc.b    'BOTTOM',NULL
  206. gsitem2        EQU    *-blm_start
  207.         dc.b    'TOP',NULL
  208. gsitem3        EQU    *-blm_start
  209.         dc.b    'LEFT',NULL
  210. gsitem4        EQU    *-blm_start
  211.         dc.b    'RIGHT',NULL
  212.  
  213. mdirttname    EQU    *-blm_start
  214.         dc.b    'M_DIRECTION',0,0,0,0,0,0,0,0
  215. mdirgtext    EQU    *-blm_start
  216.         dc.b    'MForce Dir.',NULL
  217. mdiritem1    EQU    *-blm_start
  218.         dc.b    'PULL',NULL
  219. mdiritem2    EQU    *-blm_start
  220.         dc.b    'PUSH',NULL
  221. mdiritem3    EQU    *-blm_start
  222.         dc.b    'MIX',NULL
  223.  
  224. sdttname    EQU    *-blm_start
  225.         dc.b    'SCREENDEPTH',NULL,0,0,0,0
  226. sdgtext        EQU    *-blm_start
  227.         dc.b    'ScreenDepth (1-4)',NULL
  228. objttname    EQU    *-blm_start
  229.         dc.b    'OBJECTS',NULL,0,0,0,0,0,0,0,0,0,0
  230. objgtext    EQU    *-blm_start
  231.         dc.b    'Objects (2-100)',NULL
  232. mrttname    EQU    *-blm_start
  233.         dc.b    'M_RADIUS',NULL,0,0,0,0,0,0,0,0,0,0
  234. mrgtext        EQU    *-blm_start
  235.         dc.b    'MRadius (1-2000)',NULL
  236. gfttname    EQU    *-blm_start
  237.         dc.b    'G_FORCE',NULL,0,0,0,0,0,0,0,0,0,0
  238. gfgtext        EQU    *-blm_start
  239.         dc.b    'GForce (50-2000)',NULL
  240. mfttname    EQU    *-blm_start
  241.         dc.b    'M_FORCE',NULL,0,0,0,0,0,0,0,0,0,0
  242. mfgtext        EQU    *-blm_start
  243.         dc.b    'MForce (50-2000)',NULL
  244.  
  245. nsttname    EQU    *-blm_start
  246.         dc.b    'NOVA_SPEED',NULL,0,0,0,0,0
  247. nsgtext        EQU    *-blm_start
  248.         dc.b    'ExplodeSpeed (1-30)',NULL
  249. afttname    EQU    *-blm_start
  250.         dc.b    'AIR_FRICTION',NULL,0,0,0,0,0,0,0,0
  251. afgtext        EQU    *-blm_start
  252.         dc.b    'AirFric. (5-1000)',NULL
  253. wfttname    EQU    *-blm_start
  254.         dc.b    'WALL_FRICTION',NULL,0,0,0,0,0,0,0,0
  255. wfgtext        EQU    *-blm_start
  256.         dc.b    'WallFric. (5-1000)',NULL
  257.  
  258.    dc.b '$VER:MBlank Forces 0.00 (??-??-1997) damian@cybercomm.nl',NULL
  259.  
  260. ;insert your taglist or whatever here
  261.         cnop    0,4
  262. codeentry    EQU    *-blm_start
  263.  
  264. ; Insert position-independant code here:
  265. ;     a5    =    APTR AllGlobals (may be trashed)
  266. ;--------------------------------------------------------------------------
  267.  
  268. ;Code for external module for Blanker of type 'BLMS'
  269.  
  270.         include "Equ+Macro.forces"
  271.         include "Main.forces"
  272.         cnop    0,4
  273.         include    "Calculations.forces"
  274.         include "Magnetics.forces"
  275.         cnop    0,4
  276.         include "Data.forces"
  277.         cnop    0,4
  278.         include "TTparsing.forces"
  279.         cnop    0,4
  280.         include    "DownScale.forces"
  281.                 
  282. ;--------------------------------------------------------------------------
  283. ; Here it should be finished
  284.         cnop 0,4
  285. modulesize    EQU    *-blm_start
  286.  
  287.  
  288. ; Data_saver: saves code+hunks to binary file
  289. ; code starts at buffer
  290. ;
  291. DataSave    lea    blm_start(pc),a0
  292.         move.l    #'BLMS',blm_ID(a0)
  293.         move.l    #modulesize,blm_Length(a0)
  294.         move.l    #codeentry,blm_Code(a0)
  295.         move.l    #settings,blm_Settings(a0)
  296.  
  297.         lea    maskcheck(pc),a0
  298.         move.l    #maskttname,check_TTName(a0)
  299.         move.l    #maskgtext,check_GText(a0)
  300.  
  301.         lea    dbufcheck(pc),a0
  302.         move.l    #dbufttname,check_TTName(a0)
  303.         move.l    #dbufgtext,check_GText(a0)
  304.  
  305.         lea    modecycle(pc),a0
  306.         move.l    #modettname,cycle_TTName(a0)
  307.         move.l    #modegtext,cycle_GText(a0)
  308.         move.l    #modeitem1,cycle_Items(a0)
  309.         move.l    #modeitem2,cycle_Items+4(a0)
  310.         move.l    #modeitem3,cycle_Items+8(a0)
  311.         move.l    #modeitem4,cycle_Items+12(a0)
  312.         move.l    #modeitem5,cycle_Items+16(a0)
  313.  
  314.         lea    mascycle(pc),a0
  315.         move.l    #masttname,cycle_TTName(a0)
  316.         move.l    #masgtext,cycle_GText(a0)
  317.         move.l    #masitem1,cycle_Items(a0)
  318.         move.l    #masitem2,cycle_Items+4(a0)
  319.         move.l    #masitem3,cycle_Items+8(a0)
  320.  
  321.         lea    mdircycle(pc),a0
  322.         move.l    #mdirttname,cycle_TTName(a0)
  323.         move.l    #mdirgtext,cycle_GText(a0)
  324.         move.l    #mdiritem1,cycle_Items(a0)
  325.         move.l    #mdiritem2,cycle_Items+4(a0)
  326.         move.l    #mdiritem3,cycle_Items+8(a0)
  327.  
  328.         lea    gscycle(pc),a0
  329.         move.l    #gsttname,cycle_TTName(a0)
  330.         move.l    #gsgtext,cycle_GText(a0)
  331.         move.l    #gsitem1,cycle_Items(a0)
  332.         move.l    #gsitem2,cycle_Items+4(a0)
  333.         move.l    #gsitem3,cycle_Items+8(a0)
  334.         move.l    #gsitem4,cycle_Items+12(a0)
  335.  
  336.         lea    sdslider(pc),a0
  337.         move.l    #sdttname,slide_TTName(a0)
  338.         move.l    #sdgtext,slide_GText(a0)
  339.  
  340.         lea    objslider(pc),a0
  341.         move.l    #objttname,slide_TTName(a0)
  342.         move.l    #objgtext,slide_GText(a0)
  343.  
  344.         lea    mrslider(pc),a0
  345.         move.l    #mrttname,slide_TTName(a0)
  346.         move.l    #mrgtext,slide_GText(a0)
  347.  
  348.         lea    gfslider(pc),a0
  349.         move.l    #gfttname,slide_TTName(a0)
  350.         move.l    #gfgtext,slide_GText(a0)
  351.  
  352.         lea    mfslider(pc),a0
  353.         move.l    #mfttname,slide_TTName(a0)
  354.         move.l    #mfgtext,slide_GText(a0)
  355.  
  356.         lea    nsslider(pc),a0
  357.         move.l    #nsttname,slide_TTName(a0)
  358.         move.l    #nsgtext,slide_GText(a0)
  359.  
  360.         lea    afslider(pc),a0
  361.         move.l    #afttname,slide_TTName(a0)
  362.         move.l    #afgtext,slide_GText(a0)
  363.  
  364.         lea    wfslider(pc),a0
  365.         move.l    #wfttname,slide_TTName(a0)
  366.         move.l    #wfgtext,slide_GText(a0)
  367.                 
  368. Openl        move.l    #4,a6            ;Open dos.library
  369.         move.l    (a6),a6
  370.         move.l    #$0,d0            ;Version irrelevant
  371.         lea    libname,a1
  372.         jsr    -552(a6)
  373.         move.l    d0,a5
  374.         beq    exit            ;If enable to open, exit
  375. usel        move.l    a5,a6
  376.         lea    module_name,a0
  377.         move.l    a0,d1            ;Point at name
  378.         move.l    #1006,d2        ;Open new file-modus
  379.         jsr    -30(a6)            ;Open functie in Dos.lib
  380.         move.l    d0,a4            ;store handle(ID) for later use
  381.         beq    Closel            ;Unable to open file
  382.         move.l    a4,d1            ;file-ID
  383.         lea    blm_start,a0
  384.         move.l    a0,d2            ;Data to write to file
  385.         move.l    #modulesize,d3        ;aantal bytes
  386.         jsr     -48(a6)            ;Write functie in Dos.lib
  387. closef        move.l    a4,d1            ;Close file, IMPORTANT!!!
  388.         jsr    -36(a6)
  389.         
  390. Closel      move.l    #4,a6
  391.         move.l    (a6),a6        
  392.         move.l    a5,a1            ;Close Library
  393.         jsr    -414(a6)
  394. exit        rts    
  395.  
  396. libname        dc.b "dos.library",0
  397.